/**
 @file PythonCallsJava.h
 
 @brief In this file declared functions, that are exported from the library.

 @author Sergey.Karakovskiy at idsia.ch, Nikolay.Sohryakov at gmail.com
 
 You can add your own functions to be exportd in the section @e Custom @e Code at the end of the file.
 Functions declared here are implemented in @e PythonCallsJava.cc file.
 */
#include "arrayutils.h"
#ifndef _PYTHONCALLSJAVA_H
#define	_PYTHONCALLSJAVA_H

#ifdef _WIN32
#define _AMICOPYJAVA_API __declspec(dllexport)
#else
#define _AMICOPYJAVA_API
#endif

#ifdef __cplusplus
extern "C" {
#endif

_AMICOPYJAVA_API void loadJavaClass(const char* javaClassName);
_AMICOPYJAVA_API void amicoInitialize(int nOptions = 0, ...);
_AMICOPYJAVA_API void destroyEnvironment();

_AMICOPYJAVA_API void* getMethod(const char* mName, const char* mSign);

_AMICOPYJAVA_API void callVoidMethod(void* midUInt, ...);
_AMICOPYJAVA_API int callIntMethod(void* midUInt, ...);
_AMICOPYJAVA_API short callShortMethod(void* midUInt, ...);
_AMICOPYJAVA_API long callLongMethod(void* midUInt, ...);
_AMICOPYJAVA_API unsigned short callCharMethod(void* midUInt, ...);
_AMICOPYJAVA_API signed char callByteMethod(void* midUInt, ...);
_AMICOPYJAVA_API unsigned char callBooleanMethod(void* midUInt, ...);
_AMICOPYJAVA_API char* callStringMethod(void* midUInt, ...);
_AMICOPYJAVA_API float callFloatMethod(void* midUInt, ...);
_AMICOPYJAVA_API double callDoubleMethod(void* midUInt, ...);

_AMICOPYJAVA_API void setSizeOfArrays(unsigned int size, unsigned int* arrays);

_AMICOPYJAVA_API PyObject* callIntArrayMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callShortArrayMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callLongArrayMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callCharArrayMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callByteArrayMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callBooleanArrayMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callStrinArraygMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callFloatArrayMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callDoubleArrayMethod(void* midUInt, ...);
_AMICOPYJAVA_API PyObject* callStringArrayMethod(void* midUInt, ...);

/*
 * Custom code.
 */
//Exported functions here.
/*
 *
 */

#ifdef __cplusplus
}
#endif


#endif	/* _PYTHONCALLSJAVA_H */

